using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;

namespace Doppler.Core.Plugin {
  public interface IPlugin : IPluginEvents {
    /// <summary>
    /// Gets the Guid for the plugin.
    /// </summary>
    /// <value>The GUID.</value>
    Guid Guid { get; }
    /// <summary>
    /// Indicates if the plugin has options that a user can change
    /// </summary>
    bool HasUserOptions { get; }
    /// <summary>
    /// Gets the image that is displayed in the options tree for the plugin
    /// </summary>
    Bitmap Icon { get; }
    /// <summary>
    /// Gets the name of the plugin author
    /// </summary>
    string Author { get; }
    /// <summary>
    /// Gets the description of the plugin
    /// </summary>
    string ProductDescription { get; }
    /// <summary>
    /// Gets the URL for the plugin
    /// </summary>
    Uri ProductUri { get; }
    /// <summary>
    /// Gets the version of the plugin
    /// </summary>
    Version ProductVersion { get; }
    /// <summary>
    /// Gets the name of the plugin
    /// </summary>
    string ProductName { get; }
    /// <summary>
    /// Gets an email address that users should contact about the plugin
    /// </summary>
    string ContactEmail { get; }
    /// <summary>
    /// Gets the container object that is displayed when the user views the options.
    /// </summary>
    Panel Options { get; }   
  }
}
